﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ImobitechModel.com.Controller;
using ImobitechModel.com.Constantes;

namespace Imobitech.Gestao
{
    public partial class contasReceber : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                sucesso.Visible = false;
                error.Visible = false;
                carregarCategoria();
                int id = Request.QueryString["id"] != null ? int.Parse(Request.QueryString["id"].ToString()) : 0;

                if (id > 0)
                {
                    carregaConta(id);
                    hdfConta.Value = id.ToString();
                }
                else
                    Response.Redirect("fluxoCaixa.aspx");
            }

            //if (Request.Form["__EVENTTARGET"] != null && Request.Form["__EVENTTARGET"] == "OnClick")
            //{
            //    OnClick(null, null);
            //}
        }



        private void carregarCategoria()
        {
            ControladorGestao cg = new ControladorGestao();
            ddlCategoria.DataSource = cg.retornaCategorias();
            ddlCategoria.DataTextField = "categoria";
            ddlCategoria.DataValueField = "Id";
            ddlCategoria.DataBind();
            ddlCategoria.SelectedIndex = 0;
        }

        private void carregaConta(int id)
        {
            ControladorGestao cg = new ControladorGestao();
            ContasValues conta = (ContasValues)cg.retornaConta(id);

            txtDescricao.Text = conta.descricao;
            txtDescricao.Enabled = false;

            ddlCategoria.SelectedValue = conta.categoria.ToString();
            ddlCategoria.Enabled = false;
            txtParcelas.Text = conta.numeroParcelas.ToString();
            txtParcelas.Enabled = false;
            ddlTipo.SelectedValue = conta.tipoConta.ToString();
            ddlTipo.Enabled = false;
            
            carregaPanelParcelas(conta.parcelas, conta.numeroParcelas);
        }

        private void carregaPanelParcelas(List<Parcelas> parcelas, int numeroParcelas)
        {
            rptParcelas.DataSource = parcelas;
            rptParcelas.DataBind();
            // pnlParcelas.Controls.Clear();

            //for (int index = 0; index < numeroParcelas; index++)
            //{
            //    TextBox _textbox = new TextBox();
            //    _textbox.ID = "valorparcelas" + index;
            //    _textbox.Text = formatMoney(parcelas[index].valor);

            //    TextBox _textboxData = new TextBox();
            //    _textboxData.ID = "vencimentoparcelas" + index;
            //    _textboxData.Text = formatDate(parcelas[index].vencimento);


            //    TextBox _textboxDesconto = new TextBox();
            //    _textboxDesconto.ID = "desconto" + index;
            //    _textboxDesconto.Text = formatMoney(parcelas[index].desconto);

            //    TextBox _textboxAcrescimo = new TextBox();
            //    _textboxAcrescimo.ID = "acrescimo" + index;
            //    _textboxAcrescimo.Text = formatMoney(parcelas[index].acrescimo);

            //    LiteralControl ltc = new LiteralControl("<br />");

            //    Label lblValor = new Label();
            //    lblValor.Text = "Valor: ";
            //    Label lblVencimento = new Label();
            //    lblVencimento.Text = "Data de Vencimento: ";

            //    Label lblDesconto = new Label();
            //    lblDesconto.Text = "Desconto: ";

            //    Label lblAcrescimo = new Label();
            //    lblAcrescimo.Text = "Acréscimo: ";

            //    //Button btn = new Button();

            //    //btn.ID = "btnPagar" + index;
            //    //btn.Text = "Pago";
            //    //btn.CommandArgument = parcelas[index].id.ToString();
            //    //btn.Click += new EventHandler(this.OnClick);

            //    //HyperLink link = new HyperLink();
            //    //link.Text = "Pagar";
            //    //link.CssClass = "activity";
            //    //link.NavigateUrl =
            //    //    Page.ClientScript.GetPostBackClientHyperlink(OnClick,
            //    //        parcelas[index].id.ToString(), false);


            //    //string javascript = "javascript:__doPostBack(\"OnClick\",\"" + parcelas[index].id.ToString() + "\");";

            //    //string button = "<input type='button' id='btn" + parcelas[index].id.ToString() + "' value='Button:" + parcelas[index].id.ToString() + "'"
            //    //               + "onclick='" + javascript + "' >";

            //    pnlParcelas.Controls.Add(lblVencimento);
            //    pnlParcelas.Controls.Add(_textboxData);
            //    pnlParcelas.Controls.Add(ltc);
            //    pnlParcelas.Controls.Add(lblValor);
            //    pnlParcelas.Controls.Add(_textbox);
            //    pnlParcelas.Controls.Add(ltc);
            //    pnlParcelas.Controls.Add(lblDesconto);
            //    pnlParcelas.Controls.Add(_textboxDesconto);
            //    pnlParcelas.Controls.Add(ltc);
            //    pnlParcelas.Controls.Add(lblAcrescimo);
            //    pnlParcelas.Controls.Add(_textboxAcrescimo);
            //    pnlParcelas.Controls.Add(ltc);

            //    pnlParcelas.Controls.Add(link);

            //    //pnlParcelas.Controls.Add(btn);

            //    //pnlParcelas.InnerHtml = button;

            //    //AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
            //    //trigger.ControlID = btn.UniqueID;
            //    //trigger.EventName = "Click";

            //    //updParcelas.Triggers.Add(trigger);

            //    //pnlParcelas.Controls.Add(ltc);
            //}

            //updParcelas.Update();
        }

        protected void OnClick(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            RepeaterItem ritem = (RepeaterItem)btn.NamingContainer;
            TextBox lb = (TextBox)ritem.FindControl("txtPagamento");
            string data = lb.Text;
            TextBox txtValorPago = (TextBox)ritem.FindControl("txtValorPago");
            string valorPago = txtValorPago.Text;

            ControladorGestao cg = new ControladorGestao();

            bool retorno = (bool)cg.pagaConta(int.Parse(btn.CommandArgument), DateTime.Parse(data), decimal.Parse(valorPago));
            if (retorno)
            {
                Response.Redirect("contasReceber.aspx?id=" + hdfConta.Value);
            }
            else
            {
                Response.Redirect("contasReceber.aspx?id=" + hdfConta.Value);
            }
        }

        public static string formatMoney(decimal valor)
        {
            return String.Format("{0:C}", valor);
        }

        public static string formatDate(DateTime data)
        {
            return data.ToString("dd/MM/yyyy");
        }

        protected void rptParcelas_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
                return;

            HiddenField hdfPago = (HiddenField)e.Item.FindControl("hdfPago");

            bool pago = bool.Parse(hdfPago.Value);

            if (pago)
            {
                TextBox txtValor = (TextBox)e.Item.FindControl("txtValorPago");
                txtValor.Enabled = false;

                TextBox txtdtPago = (TextBox)e.Item.FindControl("txtPagamento");
                txtdtPago.Enabled = false;

                Button btn = (Button)e.Item.FindControl("btnPagar");
                btn.Visible = false;
            }

            //int items = ((System.Web.UI.WebControls.Repeater)(sender)).Items.Count;

            //if ((items % 4) == 0)
            //{
            //    PlaceHolder row_start = (PlaceHolder)e.Item.FindControl("row_start");
            //    PlaceHolder row_end = (PlaceHolder)e.Item.FindControl("row_end");
            //    row_end.Visible = true;
            //    row_start.Visible = true;
            //}
        }
    }
}